package homework.day06;

import java.io.*;

/**
 * 将当前目录下的所有obj文件获取到，并进行
 * 反序列化后输出每个用户的信息(直接输出反序
 * 列化后的User对象即可)
 *
 * @author Xiloer
 */
public class Test02 {
    public static void main(String[] args) throws IOException, ClassNotFoundException {
        //生成一个File对象，指向当前目录
        File dir = new File(".");
        //筛选出所有以 ".obj" 结尾的文件，并将它们存储在 File 数组 subs 中
        File[] subs = dir.listFiles((f) -> f.getName().endsWith(".obj"));

        //循环subs数组的长度
        for (int i = 0; i < subs.length; i++) {
            //获取subs数组中的每一个obj文件
            File sub = subs[i];//从数组中获取每一个obj文件

            //创建了一个用于读取指定文件sub的FileInputStream对象。
            FileInputStream fis = new FileInputStream(sub);

            //读取fis对象数据
            ObjectInputStream ois = new ObjectInputStream(fis);

            //读取obj对象
            Object obj = ois.readObject();

            //判断obj是否是User类型
            if(obj instanceof User){
                //将obj强转为User类
                User user = (User)obj;
                //输出user
                System.out.println(user);
            }

        }
    }

}

/*
    提示代码:
	需要用到的语句，尝试按照正确顺序将下列代码并放在main方法中完成需求，
	并在注释中标注每句话的作用，
	//生成一个File对象，指向当前目录
    File dir = new File(".");

    //循环subs数组的长度
    for(int i=0;i<subs.length;i++){

    }

    //筛选出所有以 ".obj" 结尾的文件，并将它们存储在 File 数组 subs 中
    File[] subs = dir.listFiles((f)->f.getName().endsWith(".obj"));

    //创建了一个用于读取指定文件sub的FileInputStream对象。
    FileInputStream fis = new FileInputStream(sub);

    //获取subs数组中的每一个obj文件
    File sub = subs[i];//从数组中获取每一个obj文件

    //输出user
    System.out.println(user);

    //读取fis对象数据
    ObjectInputStream ois = new ObjectInputStream(fis);

    //将obj强转为User类
    User user = (User)obj;

    //读取obj对象
    Object obj = ois.readObject();

    //判断obj是否是User类型
    if(obj instanceof User){

    }

 */